package com.uplift.common.result;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.uplift.common.result.impl.DefaultResult;

public class ResultWrapper {
	public static String SUCC = "1";
	public static String FAIL = "0";

	/**
	 * 包装带分页列表的数据成为Map结构
	 * 
	 * @param list
	 * @param status
	 * @param message
	 * @return Map<String, Object>
	 */
	public static IResultable wrapListPage(List<?> list, String status, String message) {
		DefaultResult webResult = new DefaultResult();

		Map<String, Object> dataMap = new HashMap<String, Object>();
		Map<String, Object> pageConfig = new HashMap<String, Object>();

		if (list == null) {
			pageConfig.put("page", 0);
			pageConfig.put("pageSize", 0);
			pageConfig.put("totalPage", 0);
			pageConfig.put("totalCount", 0);
			dataMap.put("dataList", "");
		} else {
			@SuppressWarnings("unchecked")
			PageInfo<Object> pi = new PageInfo<Object>((List<Object>) list);
			pageConfig.put("page", pi.getPageNum());
			pageConfig.put("pageSize", pi.getPageSize());
			pageConfig.put("totalPage", pi.getPages());
			pageConfig.put("totalCount", pi.getTotal());
			dataMap.put("dataList", list);
		}
		dataMap.put("pageConfig", pageConfig);

		webResult.setData(dataMap);
		webResult.setStatus(status);
		webResult.setMessage(message);
		webResult.setLocation("");

		return webResult;
	}

	/**
	 * 封装没有分页的list
	 * 
	 * @param list
	 * @param status
	 * @param message
	 * @return Map<String, Object>
	 */
	public static IResultable wrapListNoPage(List<?> list, String status, String message) {
		DefaultResult webResult = new DefaultResult();

		Map<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("dataList", list);

		webResult.setData(dataMap);
		webResult.setStatus(status);
		webResult.setMessage(message);
		webResult.setLocation("");

		return webResult;
	}

	/**
	 * 包装普通Map响应，data参数可null
	 * 
	 * @param data
	 * @param status
	 * @param message
	 * @return Map<String, Object>
	 */
	public static IResultable wrapMap(Map<?, ?> data, String status, String message) {
		DefaultResult webResult = new DefaultResult();
		if (data == null || data.isEmpty()) {
			webResult.setData("");
		} else {
			webResult.setData(data);
		}
		webResult.setStatus(status);
		webResult.setMessage(message);
		webResult.setLocation("");
		return webResult;
	}

}
